

# 定义目标
# 目标名: 前置依赖列表
# 	命令1
# 	命令2
# 	命令3
# main: main.c hello.c hello.h
# 	gcc main.c hello.c -o main
# 	./main
# 	rm main

# 定义变量 
# objects := main.o hello.o
# objects := main.o
# objects += hello.o
objects := main.o \
		hello.o
# 定义伪目标： 不生成对应的目标文件的目标
.PHONY: clean

# 编译生成可执行文件main
main: $(objects)
	gcc $(objects) -o main

# 编译生成main.o
main.o: main.c hello.h
	gcc -c main.c -o main.o

# 编译生成hello.o
hello.o: hello.c
	gcc -c hello.c -o hello.o

clean:
	rm main $(objects)

clean2:
	-rm main
	-rm main.o
	-rm hello.o

